package com.loveto.service;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;

import com.loveto.common.ImageDownloader;
import com.loveto.common.JsonUtils;
import com.loveto.constant.LovetoConstant;
import com.loveto.constant.LovetoGiftAnims;
import com.loveto.model.ParticipantInfo;

// A : 토너먼트 개설자인데 마감시간이 끝나서 결정해야 할 경우 // 선택하기 버튼
// B : 토너먼트 개설자인데 마감시간이 안끝난 경우 // 버튼 없앰
// C : 참여자인데 이미 참여한 사람인 경우 // 버튼 없앰
// D : 참여자인데 처음 참가하는 사람 // 기존 버튼 그대로

public class InfoTournamentActivity extends BaseActivity implements
View.OnClickListener{  
	
	// 사용하는 변수들
	private LinearLayout contentMain; // 전체 레이아웃 // LinearLayout
	private LinearLayout groupListLayout;
	private ProgressDialog progressDialog; // 프로그레스다이얼로그
	private String tournamentID;
	private String target_userID;
	private String category;
	private String tournamentMakerID;
	private String tournamentMakerGender;
	private String lastJoinDayStr;
	private String todayDateStr;
	private int lastJoinCnt;
	private int joinOverPrice;
	private Handler myHandler;
	private MemberStatus myMemberStatus;
	private ArrayList<String> winnerIDList;
	private ArrayList<Integer> giftIDList;
	private Integer totalCompetitorSize;
	private enum  MemberStatus {A, B, C, D}
	private static final int DIALOG_CUSTOM1 = 0;
	private Dialog customDialogInstance;
	private JSONObject makerInfoObj;

	private String memberID;
	private String myGender;
	private int myPoint;
	private List<RelativeLayout> participantLayoutList; // 하나의 row Layout 들을 간직한 List
	private boolean isAlreadyJoined = false;
	private LinearLayout contentMainInner;
	private String[] photoUrlArray;
	private LovetoGiftAnims giftAnims = new LovetoGiftAnims();
	
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Log.d("tag", "onCreate()");
		setContentView(R.layout.loveto_info_tournament);
		
		SharedPreferences pref = getSharedPreferences("userInfo", Activity.MODE_PRIVATE);
		memberID = pref.getString("memberid", "");
		myPoint = pref.getInt("point", 0);
		myGender = pref.getString("gender", "");
		tournamentMakerGender = "";
		
		// 초기화
		contentMain = (LinearLayout) findViewById(R.id.content_main);
		groupListLayout = (LinearLayout) findViewById(R.id.group_list);
		progressDialog = new ProgressDialog(InfoTournamentActivity.this);
		myHandler = new Handler();
		myMemberStatus = MemberStatus.D;
		tournamentMakerID = "";
		
		//전 엑티비티에서 토너먼트 번호 받아오기
		Intent intent = getIntent();
		tournamentID = intent.getStringExtra("tournamentID");
		
		// 클릭 리스너 달기
		RelativeLayout button = (RelativeLayout)findViewById(R.id.btn_join_or_choice);
		button.setOnClickListener(this);
		((RelativeLayout)findViewById(R.id.btn_goto_back)).setOnClickListener(this);
		((RelativeLayout)findViewById(R.id.btn_report_create)).setOnClickListener(this);
		((ImageView)findViewById(R.id.makerinfo_photo)).setOnClickListener(this);
	}
	
	@Override
	protected void onResume() {
		super.onResume();
		Log.d("tag", "onResume()");
		
		totalCompetitorSize = 0;
		winnerIDList = new ArrayList<String>();
		giftIDList = new ArrayList<Integer>();
		
		// 토너먼트 정보 세팅 (주최자, 질문 , 시간 )
		if (isNetworkAvailableAndNotice()) {
			// 참여자 정보 세팅 (그룹, 참여자)
			groupListLayout.removeAllViews();
			setTournamentInfo();
		}
		
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
			case R.id.btn_join_or_choice:
				joinOrChoice();
				break;
			case R.id.btn_report_create: //주최자 신고하기
				showAlertReport(tournamentMakerID,"create");
				break;
			case R.id.btn_report_participant: //주최자 신고하기
				RelativeLayout outerArea = (RelativeLayout)v.getParent(); 
				String targetID = ((TextView)outerArea.findViewById(R.id.user_id_text)).getText().toString(); 
				showAlertReport(targetID,"join");
				break;
			case R.id.makerinfo_photo:
				Intent intent = new Intent(InfoTournamentActivity.this, UserinfoViewOthersActivity.class);
				intent.putExtra("memberid_other", tournamentMakerID);
				intent.putExtra("lookingTarget", "TournamentMaker");
				startActivity(intent);
				break;
			case R.id.btn_goto_back:
				finish();
				break;
		}
	}
	
	//토너먼트 정보 세팅 (주최자, 질문, 마감 시간)
	private void setTournamentInfo() {
		
		progressDialog.setMessage("정보를 불러오고있습니다.");
		progressDialog.show();
		
		contentMainInner = new LinearLayout(InfoTournamentActivity.this);
		contentMainInner.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
		contentMainInner.setOrientation(LinearLayout.VERTICAL);
		
		new Thread(new Runnable(){
			@Override
			public void run() {
				//UI 를 건들기 때문에 핸들러 사용.
				try {
					String market_name = getResources().getString(R.string.app_market);
					String jsonText = JsonUtils
							.getStringFromUrl(LovetoConstant.INFO_TOURNAMENT_URL + "?tournamentid=" + tournamentID + "&market_name=" + market_name + "&memberid=" + memberID);
					Log.d("tag", "url : " + LovetoConstant.INFO_TOURNAMENT_URL + "?tournamentid=" + tournamentID + "&market_name=" + market_name + "&memberid=" + memberID);
					Log.d("tag", "jsonText : " + jsonText);
					// 원격에서 읽어온 데이터로 JSON 객체 생성
					try {
						
						//부가정보 받아오기
						JSONObject getObject = new JSONObject(jsonText);
						joinOverPrice = getObject.getInt("joinOverPrice");
						Log.d("tag", "joinOverPrice(from DB): " + joinOverPrice);
						todayDateStr = getObject.getString("todayDateStr");
						Log.d("tag", "todayDateStr(from DB): " + todayDateStr);
						lastJoinDayStr = getObject.getString("lastJoinDayStr");
						Log.d("tag", "lastJoinDayStr(from DB): " + lastJoinDayStr);
						lastJoinCnt = getObject.getInt("lastJoinCnt");
						Log.d("tag", "lastJoinCnt(from DB): " + lastJoinCnt);
						
						//주최자 정보 받아오기
						JSONArray makerInfoArray = getObject.getJSONArray("makerInfo");
						makerInfoObj = makerInfoArray.getJSONObject(0);
						Log.d("tag", "makerInfoObj(from DB): " + makerInfoObj.toString());
						tournamentMakerGender = makerInfoObj.getString("gender");
						tournamentMakerID =  makerInfoObj.getString("tournament_maker_memberid");
						
						//참여자 정보 받아오기
						participantLayoutList = new ArrayList<RelativeLayout>();
						JSONArray jsonArray = getObject.getJSONArray("participantInfo");
						int presentGroupNum = -1; // 현재 그룹넘버
						int jsonArrayLen = jsonArray.length();
						//Log.d("tag","길이는?" + jsonArrayLen);

						// 사진을 전체 다운로드를 위하여 // 초기화
						photoUrlArray = new String[jsonArrayLen]; // 사진url array
						totalCompetitorSize += jsonArrayLen;
						for (int i = 0; i < jsonArrayLen; i++) {
							JSONObject object = jsonArray.getJSONObject(i);
							ParticipantInfo participantInfo = new ParticipantInfo(
									object.getInt("groupnum"),
									object.getString("gender"),
									object.getString("roundparticipant_memberid"),
									object.getString("local"),
									object.getString("local_detail"),
									object.getString("age"),
									object.getString("answer_content"), 
									object.getString("photo_url1"),
									object.getString("size"),
									object.getInt("giftid")
								);
							
							// 참가자 ID 따로 저장
							winnerIDList.add(object.getString("roundparticipant_memberid"));
							giftIDList.add(object.getInt("giftid"));
							
							// 현재사용자와 현재 참가한 참가자가 같으면
							if(myMemberStatus.equals(MemberStatus.D) && memberID != null && memberID.equals(participantInfo.getParticipant_memberid())){
								isAlreadyJoined = true;
							}
							
							// 조편성 row 만들기
							if (presentGroupNum != participantInfo.getGroupnum()) { // 현재 그룹넘버와 다르다면 make
								RelativeLayout GroupInfoLayout = makeGpoupRelativeLayout(participantInfo, presentGroupNum);
								presentGroupNum = participantInfo.getGroupnum();
								contentMainInner.addView(GroupInfoLayout);
							}
							// 참여자 row 만들기
							RelativeLayout participantInfoLayout = makeParticipantRelativeLayout(participantInfo, photoUrlArray, i);
							// 사진 전체 다운로드를 위하여
							participantLayoutList.add(participantInfoLayout);
							contentMainInner.addView(participantInfoLayout);
						}
						Log.d("tag","jason 처리 끝");
							
					} catch (JSONException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
						Log.d("tag", "jasonErr: " + e.toString());
					}
				} catch (UnsupportedEncodingException e) {
					e.printStackTrace();
				} finally {
					Log.d("tag","마지막 화면 처리 시작");
					myHandler.post(new Runnable() {
						@Override
						public void run() { 
							
							if (isAlreadyJoined) {
								setMemberStatusAndChangeButtonStatus(MemberStatus.C); // 참여자인데 이미 참여한 사람인 경우 // 버튼 없앰
							}
							
							//주최자 레이아웃
							try {
								makeMakerInfoLayout();
							} catch (JSONException e) {
								e.printStackTrace();
							}
							
							// 사진 한꺼번에 다운로드
							Log.d("tag","참여자 레이아웃 만들기 시작");
							ImageDownloader imageDownloader = new ImageDownloader();
							int photoUrlArrayLen = photoUrlArray.length;
							for (int i = 0; i < photoUrlArrayLen; i++) {
								//유저 사진
								String photoUrl = photoUrlArray[i];
								ImageView imgView = (ImageView) participantLayoutList.get(i)
										.findViewById(R.id.userinfo_photo);
								imageDownloader.download(photoUrl, imgView);
								//선물 사진
								if (giftIDList.get(i) != 0) {
									ImageView giftImage = (ImageView) participantLayoutList.get(i).findViewById(R.id.gift_image);
									int giftID = giftIDList.get(i);
									//image.setBackgroundResource(R.drawable.bg_gift_background_blank);
									if (giftAnims.getGiftImageMap().containsKey(giftID)) {
										//Log.d("tag","가져와보자");
										//로컬에 선물 아이디에 대한 이미지 리소스가 있으면
										giftImage.setImageResource(giftAnims.getGiftImageMap().get(giftID)); //이미지 지정
									} else {
										//현재 버전에 선물에 대한 이미지 리소스가 없으면 FTP 의 1장짜리 이미지로 대체함
										String url = LovetoConstant.GIFT_IMAGE_URL + giftID + ".png";
										//Log.d("tag","선물 url: " + url);
										imageDownloader.download(url, giftImage);
									}
								}
								
							}
							
							Log.d("tag","참여자 레이아웃 화면에 넣어주기");
							groupListLayout.addView(contentMainInner);
							
							//참여자가 없을 경우 말풍선 보여주기
							if (totalCompetitorSize == 0) {
								((ImageView)findViewById(R.id.waiting_participant)).setVisibility(ImageView.VISIBLE);
							} else {
								((ScrollView)findViewById(R.id.content_scroll)).setBackgroundResource(R.drawable.bg_graypattern);
							}
							// 프로그레스 다이얼로그 끄기
							progressDialog.dismiss();
							Log.d("tag", "화면 갱신 종료");
						}
					});
				}
			}
		}).start();
	}
	
private void makeMakerInfoLayout() throws JSONException {
		
		Log.d("tag", "주최자 레이아웃 만들기");
		String local = makerInfoObj.getString("local");
		String local_detail = makerInfoObj.getString("local_detail");
		String tournament_maker_memberid = makerInfoObj.getString("tournament_maker_memberid");
		String tournament_title = makerInfoObj.getString("tournament_title");
		//String answer_endtime = object.getString("answer_endtime");
		String day = makerInfoObj.getString("day");
		String time = makerInfoObj.getString("time");
		String question_content = makerInfoObj.getString("question_content");
		String age = makerInfoObj.getString("age");
		String question_low_category = makerInfoObj.getString("question_low_category");
		int isDeadline = makerInfoObj.getInt("is_deadline");
		
		// 사용자와 토너먼트 개설자와 같다면
		if(memberID != null && tournament_maker_memberid != null && memberID.equals(tournament_maker_memberid)) {
			// 토너먼트 참여마감 시간 비교
			if(isDeadline == 1){ // 마감시간이 안지났다면 true
				setMemberStatusAndChangeButtonStatus(MemberStatus.B); // 토너먼트 개설자인데 마감시간이 안끝난 경우 // 버튼 없애기
			} else if(isDeadline == 0){ // 마감시간이 지났다면 false
				setMemberStatusAndChangeButtonStatus(MemberStatus.A); // 토너먼트 개설자인데 마감시간이 끝나서 결정해야 할 경우 // 선택하기 버튼
			}
		}
		
		//주최자 유저 정보 변경
		TextView v_tournament_maker_memberid = (TextView) findViewById(R.id.makerinfo_userinfo);
		StringBuffer userinfoSB = new StringBuffer(local);
		if (local_detail != null) {
			if ( (!local_detail.equals("")) && (!local_detail.equals("null"))) {
				userinfoSB.append(" ");
				userinfoSB.append(local_detail);
			}
		}
		v_tournament_maker_memberid.setText(tournament_maker_memberid + ", " + userinfoSB.toString() + ", " + age);
		
		//헤더를 주최자 이름으로
		TextView v_header_text = (TextView) findViewById(R.id.header_text);
		v_header_text.setText(tournament_maker_memberid);
		
		//토너먼트 제목 변경
		TextView v_tournament_title = (TextView) findViewById(R.id.makerinfo_title);
		v_tournament_title.setText(tournament_title);
		
		//질문 카테고리 변경
		if (!"null".equals(question_low_category) ) {
			TextView v_question_low_category = (TextView) findViewById(R.id.tourinfo_low_category);
			v_question_low_category.setText("[" + question_low_category + "]");
		}
		
		//질문 변경
		TextView v_question_content = (TextView) findViewById(R.id.tourinfo_question);
		v_question_content.setText(question_content);
		
		//마감 시간 변경
		TextView v_answer_endtime = (TextView) findViewById(R.id.tourinfo_answer_endtime);
		v_answer_endtime.setText(day + " " + time + " 마감");
		
		//개설자 성별에 따른 포맷 변경 
		if ("M".equals(tournamentMakerGender)) {
			((ImageView)findViewById(R.id.makerinfo_photo_round)).setImageResource(R.drawable.bg_photo_round_man);
			((TextView)findViewById(R.id.makerinfo_userinfo)).setTextColor(getResources().getColor(R.color.textMan));
		}
		
		/*    //사진에 캡 씌우기
		//같은 성별의 주최자 사진 or 비로그인 유저인 경우 캡을 씌움
		if (myGender.equals(tournamentMakerGender) || "".equals(memberID)) {
			if ("F".equals(tournamentMakerGender)) {
				((ImageView)findViewById(R.id.tourlist_photo_cap)).setImageResource(R.drawable.thumb_cap_woman);
			}
			((ImageView)findViewById(R.id.tourlist_photo_cap)).setVisibility(ImageView.VISIBLE);
		}*/
		
		//사진 변경
		String url = LovetoConstant.PHOTO_THUMB_URL + tournament_maker_memberid + ".jpg";
		ImageDownloader imageDownloader = new ImageDownloader();
		ImageView imgView = (ImageView) findViewById(R.id.makerinfo_photo);
		imageDownloader.download(url, imgView);
		
		//사진 화면에 표시
		((ImageView)findViewById(R.id.makerinfo_photo)).setVisibility(ImageView.VISIBLE);
		((ImageView)findViewById(R.id.makerinfo_photo_round)).setVisibility(ImageView.VISIBLE);
	}
	
	// 참가자 레이아웃을 만들어서 반환
	private RelativeLayout makeParticipantRelativeLayout(ParticipantInfo participantInfo,
			String[] photoUrlArray, int index) {
		
		//레이아웃 넣기
		RelativeLayout participantLayout = null;
		if (participantInfo.getGiftid() == 0) {
			if ("M".equals(participantInfo.getGender())) {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_man, null);
			} else {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_woman, null);
			}
		} else if ("L".equals(participantInfo.getGift_size())) {
			if ("M".equals(participantInfo.getGender())) {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_man_gift_large, null);
			} else {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_woman_gift_large, null);
			}
		} else if ("M".equals(participantInfo.getGift_size())) {
			if ("M".equals(participantInfo.getGender())) {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_man_gift_medium, null);
			} else {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_woman_gift_medium, null);
			}
		} else if ("S".equals(participantInfo.getGift_size())) {
			if ("M".equals(participantInfo.getGender())) {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_man_gift_small, null);
			} else {
				participantLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_info_tournament_userlist_woman_gift_small, null);
			}
		}

		// 유저 인포 텍스트 변경
		TextView userInfo = (TextView) participantLayout
				.findViewById(R.id.userinfo_text);
		StringBuffer sb = new StringBuffer();
		sb.append(participantInfo.getParticipant_memberid());
		sb.append(", ");
		sb.append(participantInfo.getLocal());
		if (participantInfo.getLocal_detail() != null) {
			if ( (!participantInfo.getLocal_detail().equals("")) && (!participantInfo.getLocal_detail().equals("null"))) {
				sb.append(" ");
				sb.append(participantInfo.getLocal_detail());
			}
		}
		sb.append(", ");
		sb.append(participantInfo.getAge());
		userInfo.setText(sb);
		
		// 유저 답변 변경
		TextView anwerText = (TextView) participantLayout
				.findViewById(R.id.talk_text);
		anwerText.setText(participantInfo.getAnswer_content());
		
		//신고 버튼 클릭리스너 달기
		if (!memberID.equals(participantInfo.getParticipant_memberid())) {
			((RelativeLayout)participantLayout.findViewById(R.id.btn_report_participant)).setOnClickListener(this);
		} else {
			((RelativeLayout)participantLayout.findViewById(R.id.btn_report_participant)).setVisibility(RelativeLayout.GONE);
		}
		
		//참여자 아이디 달기 (숨김)
		((TextView)participantLayout.findViewById(R.id.user_id_text)).setText(participantInfo.getParticipant_memberid());
		
		// StringBuffer 초기화
		sb.setLength(0);
		// 재사용
		sb.append(LovetoConstant.PHOTO_THUMB_URL);
		sb.append(participantInfo.getParticipant_memberid());
		sb.append(".jpg");
		photoUrlArray[index] = sb.toString();
		
		return participantLayout;
	}
	
	// 그룹 레이아웃을 만들어서 반환
	private RelativeLayout makeGpoupRelativeLayout(ParticipantInfo participantInfo, int presentGroupNum) {
		//조배정 만들기
		RelativeLayout groupLayout = (RelativeLayout) getLayoutInflater()
				.inflate(R.layout.loveto_info_tournament_group, null);

		ImageView groupImage = (ImageView) groupLayout.findViewById(R.id.img_group_num);
		switch (participantInfo.getGroupnum()) {
		case 1:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_01);
			break;
		case 2:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_02);
			break;
		case 3:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_03);
			break;
		case 4:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_04);
			break;
		case 5:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_05);
			break;
		case 6:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_06);
			break;
		case 7:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_07);
			break;
		case 8:
			groupImage.setImageResource(R.drawable.text_info_tournament_group_08);
			break;
		}
		return groupLayout;
	}
	
	private void setMemberStatusAndChangeButtonStatus(MemberStatus memberStatus) {
		// TODO Auto-generated method stub
		// 버튼 초기화
		if(memberStatus.equals(MemberStatus.A)) { // A : 토너먼트 개설자인데 마감시간이 끝나서 결정해야 할 경우 // 선택하기 버튼
			myMemberStatus = MemberStatus.A;
			ImageView imageView = (ImageView) findViewById(R.id.text_join_or_choice);
			imageView.setImageResource(R.drawable.text_info_tournament_choice);
		} else if(memberStatus.equals(MemberStatus.B)) { // B : 토너먼트 개설자인데 마감시간이 안끝난 경우 // 버튼 없앰
			myMemberStatus = MemberStatus.B;
			RelativeLayout button = (RelativeLayout)findViewById(R.id.btn_join_or_choice);
			contentMain.removeView(button);
			((LinearLayout)findViewById(R.id.explain_tournament_for_creator)).setVisibility(LinearLayout.VISIBLE);
		} else if(memberStatus.equals(MemberStatus.C)){ // C : 참여자인데 이미 참여한 사람인 경우 // 버튼 없앰
			myMemberStatus = MemberStatus.C;
			RelativeLayout button = (RelativeLayout)findViewById(R.id.btn_join_or_choice);
			contentMain.removeView(button);
			((LinearLayout)findViewById(R.id.explain_tournament_for_joinner)).setVisibility(LinearLayout.VISIBLE);
		} else {
			
		}
	}
	
	private boolean isJoinOverDayLimit() {
		//마지막 참여한 날이 로컬의 값과 같고, 참여횟수 카운트가 2 이상이면
		if (todayDateStr.equals(lastJoinDayStr) && lastJoinCnt >= 2) { 
				return true; //횟수 초과 시 트루
		}
		return false; //횟수 괜참음
	}
	
	
    @Override
    protected Dialog onCreateDialog(int id) {
        Dialog dialog;
        switch(id) {
            case DIALOG_CUSTOM1:
            	Log.d("tag","다이얼로그1 띄우기1");
                dialog = getCustomDialog1();
                customDialogInstance = dialog;
                break;
            default:
            	dialog = null;
            	break;
        }
        return dialog;
    }
	
    private Dialog getCustomDialog1() {
        AlertDialog.Builder builder;
        AlertDialog alertDialog;
        
        //팝업 레이아웃 설정
   	 	RelativeLayout layout = (RelativeLayout) getLayoutInflater().inflate(R.layout.loveto_dialog_join_limit, null);
   	 	//가격 표시
   	 	((TextView)layout.findViewById(R.id.text_price)).setText("-" + joinOverPrice);
   	 	//구매 확인 글  수정
   	 	((TextView)layout.findViewById(R.id.text_purchase_ask)).setText("러브토 토너먼트의 하루 무료 참여 횟수 2회를 모두 사용하셨습니다. 추가 참여를 위해 " + joinOverPrice + "클로버가 필요합니다. 참여하시겠습니까?");
   	 	//내 코인
   	 	((TextView)layout.findViewById(R.id.text_my_point)).setText("" + myPoint);
   	 	
        TextView okButton = (TextView)layout.findViewById(R.id.btn_ok);
        okButton.setOnClickListener(new OnClickListener() {
            //구매 버튼 처리
            @Override
            public void onClick(View v) {
            		if (myPoint >= joinOverPrice) {
            			customDialogInstance.dismiss();
            			Intent intent = new Intent(InfoTournamentActivity.this, JoinTournamentMainActivity.class);
						intent.putExtra("tournamentID", tournamentID);
						intent.putExtra("tournamentMakerID", tournamentMakerID);
						intent.putExtra("joinOverPrice", joinOverPrice);
						startActivity(intent);
            		} else {
            			showSimpleAlert("보유한 클로버가 부족하여 충전이 필요합니다.");
            		}
            }
            
        });
        
        TextView cancelButton = (TextView)layout.findViewById(R.id.btn_cancel);
        cancelButton.setOnClickListener(new OnClickListener() {
        	//구매 취소 버튼 처리
            @Override
            public void onClick(View v) {
                customDialogInstance.dismiss();                
            }
        });
        
        builder = new AlertDialog.Builder(this);
        builder.setView(layout);
        alertDialog = builder.create();
                
        return alertDialog;
    }
	
    private void showAlertReport(String get_target_userID, String get_category) {
    	target_userID = get_target_userID;
    	category = get_category;
		new AlertDialog.Builder(this)
		.setTitle("신고")
		.setMessage("욕설/홍보/음란성/허위정보 등을 신고해주세요! 단,허위신고는 불이익을 받을 수 있습니다.")
		.setPositiveButton("신고", new DialogInterface.OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				dialog.dismiss();
				Intent intent = new Intent(InfoTournamentActivity.this,ReportUserActivity.class);
				intent.putExtra("category", category);
				intent.putExtra("target_userID", target_userID);
				intent.putExtra("tournamentID", tournamentID);
				startActivity(intent);
			}
		})
		.setNegativeButton("취소", new DialogInterface.OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				dialog.dismiss();
			}
		})
		.show();
    }
    
    private void joinOrChoice() {
    	Intent intent = null;
    	//비로그인 시 참여불가
    	if ("".equals(memberID)) {
    		showSimpleAlertAndMoveChoice("로그인을 하지않으면 토너먼트에 참여할 수 없습니다. 로그인 하시겠습니까?", InfoTournamentActivity.this, LoginMainActivity.class,"로그인");
    		return;
    	}
    	
    	//주최자가 같은 성별인 경우 참여 불가
		if(myGender.equals(tournamentMakerGender) && !tournamentMakerID.equals(memberID)) {
			showSimpleAlert("주최자가 같은 성별인 토너먼트는 참여할 수 없습니다.");
			return;
		}
		
		//기본사진 1장과 프로필의 기본정보를 입력해야 참여 가능
		SharedPreferences prefUser = getSharedPreferences("userInfo", Activity.MODE_PRIVATE);
		String local = prefUser.getString("local", "");
		String age = prefUser.getString("age", ""); 
		String job = prefUser.getString("job", "");
		String height = prefUser.getString("height", "");
		String photo_url1 = prefUser.getString("photo_url1", "");
		StringBuffer unInput = new StringBuffer();
		if ("".equals(local) || "null".equals(local)) {
			unInput.append("지역 ");
		}
		if ("".equals(age) || "null".equals(age)) {
			unInput.append("나이 ");
		}
		if ("".equals(job) || "null".equals(job)) {
			unInput.append("직업 ");
		}
		if ("".equals(height) || "null".equals(height)) {
			unInput.append("키 ");
		}
		if ("".equals(photo_url1) || "null".equals(photo_url1)) {
			unInput.append("기본사진 ");
		}
		if ("".equals(local) || "".equals(age) || "".equals(job) || "".equals(height) || "".equals(photo_url1) || "null".equals(local) || "null".equals(age) || "null".equals(job) || "null".equals(height) || "null".equals(photo_url1)) {
			showSimpleAlertAndMoveChoice("프로필에 기본사진 1장과 기본정보를 입력해야 참여가 가능합니다. 프로필을 입력하기 위해 이동하시겠습니까? \n [ 필요 정보: " + unInput.toString() + "]", InfoTournamentActivity.this, UserinfoViewMineActivity.class,"이동");
			return;
		}
		
		
		//참여 처리
		if(myMemberStatus.equals(MemberStatus.A)) { // 토너먼트 개설자인데 마감시간이 지나서 결정내려야 하는 경우
			intent = new Intent(InfoTournamentActivity.this, SelectWinnerIntermidRoundActivity.class);
			intent.putExtra("tournamentID", tournamentID);
			intent.putExtra("roundSeq", 1);
			intent.putExtra("totalCompetitorSize", totalCompetitorSize);
			intent.putStringArrayListExtra("winnerIDList", winnerIDList);
			startActivity(intent);
		} else if(myMemberStatus.equals(MemberStatus.D)) { // 첨 참가하는 사람
			if (!isJoinOverDayLimit()) { //무료 참가횟수 제한에 걸리지 않으면 바로 고고싱
				intent = new Intent(InfoTournamentActivity.this, JoinTournamentMainActivity.class);
				intent.putExtra("tournamentID", tournamentID);
				intent.putExtra("tournamentMakerID", tournamentMakerID);
				intent.putExtra("joinOverPrice", 0); //정상적인 참여시엔 참여횟수초과 소모코인이 0이다.
				startActivity(intent);
			} else {
				Log.d("tag", "참여횟수 유료결제팝업 띄워보자!");
				showDialog(DIALOG_CUSTOM1); //무료 참가횟수 제한에 걸리면 결제팝업부터 뜸.
			}
		}
    }
	
}
